package cn.zn.quartz.service;

import cn.zn.quartz.dto.JobDto;
import cn.zn.quartz.dto.JobLogDto;
import org.quartz.SchedulerException;

import java.util.List;

public interface JobService {

    /**
     * 项目启动时，初始化定时器 主要是防止手动修改数据库导致未同步到定时任务处理（注：不能手动修改数据库ID和任务组名，否则会导致脏数据）
     */
    void initJobs() throws Exception;

    /**
     * 批量创建任务
     *
     * @param jobs 任务
     * @throws Exception 异常
     */
    void createScheduleJobs(List<JobDto> jobs) throws Exception;

    /**
     * 创建任务
     *
     * @param job 任务
     * @throws Exception 异常
     */
    void createScheduleJob(JobDto job) throws Exception;

    /**
     * 暂停任务
     *
     * @param job 调度信息
     */
    void pauseJob(JobDto job) throws SchedulerException;

    /**
     * 恢复任务
     *
     * @param job 调度信息
     */
    void resumeJob(JobDto job) throws SchedulerException;

    /**
     * 删除任务
     *
     * @param job 任务
     * @throws SchedulerException 异常
     */
    void deleteJob(JobDto job) throws SchedulerException;

    /**
     * 立即运行任务
     *
     * @param job 调度信息
     */
    void run(JobDto job) throws SchedulerException;

    /**
     * 更新任务
     *
     * @param job 任务
     * @throws SchedulerException 异常
     */
    void updateJob(JobDto job) throws SchedulerException;

    /**
     * 记录日志
     *
     * @param log 日志
     */
    void insertJobLog(JobLogDto log);

}
